As computer networks, the Internet, and distributed computing have developed, members of project teams have become increasingly able to work from different physical locations. Tools such as electronic mail, notes conferences, the world wide web (WWW) and remote file transfer provide a first level of communication between team members. At times, however, there is required the ability to enable multiple team members at differing physical locations to simultaneously view and/or interact with any computer program or set of data. All participating team members must be able to provide inputs, and see the results of their own and other team members' inputs in real time. Such functionality is provided in general by software products referred to as "collaborative tools".
Existing collaborative tools often employ a protocol level splitting approach in which windowing protocol messages are captured at each collaborating client system and sent to a server system. Such existing systems have significant shortcomings. Specifically, in existing collaboration tools, only a single application program may be shared at one time. Existing collaborative tools also only permit sharing of two dimensional graphics applications between users having two dimensional graphics display devices. Accordingly, existing collaborative tools are incapable of conveniently sharing two and three dimensional graphics applications between users on both two and three dimensional graphics display devices. In addition, existing collaborative tools do not permit sharing of any partial displays of shared applications. Instead, existing systems require a single shared application to be completely displayed to each client.
Thus, it is desirable to have a collaborative tool which permits multiple application programs to be shared simultaneously, which allows two and three dimensional graphics information to be shared with users on both two and three dimensional display devices, and which enables team members to share partial displays of application windows.